package com.wayhome.srpingbootmybatis.policy.bo;

import com.wayhome.srpingbootmybatis.config.ApiResult;
import com.wayhome.srpingbootmybatis.policy.dto.PolicyDocDTO;
import com.wayhome.srpingbootmybatis.policy.dto.ReqPolicyDocDTO;
import com.wayhome.srpingbootmybatis.policy.dto.ReqPolicyDocFileDTO;

import java.util.List;

public interface PolicyDocBO {

    /**
     * 新增政策文件
     *
     * @param policyDocDTO 请求参数
     * @return
     * @throws Exception 返回结果
     */
    Boolean insertPolicyDoc(PolicyDocDTO policyDocDTO) throws Exception;

    /**
     * 查询政策列表
     * @param reqPolicyDocDTO 请求参数
     * @return 返回结果
     * @throws Exception
     */
    List<PolicyDocDTO> queryList(ReqPolicyDocDTO reqPolicyDocDTO) throws Exception;

    /**
     * 更新政策文件
     *
     * @param policyDocDTO 请求参数
     * @return 返回结果
     * @throws Exception 异常信息
     */
    Boolean updateDoc(PolicyDocDTO policyDocDTO) throws Exception;

    /**
     * 上传文件
     *
     * @param request 请求参数
     * @return 返回结果
     * @throws Exception 异常信息
     */
    Boolean saveUploadDocFile(ReqPolicyDocFileDTO request) throws Exception;

    /**
     * 查询政策详情，包括文件
     * @param reqPolicyDocDTO 请求参数
     * @return 返回结果
     * @throws Exception 异常信息
     */
    PolicyDocDTO queryDocDetail(ReqPolicyDocDTO reqPolicyDocDTO) throws Exception;

    /**
     * 作废政策文件
     *
     * @param policyDocDTO 请求参数
     * @return 返回结果
     * @throws Exception 异常信息
     */
    Boolean deleteDoc(PolicyDocDTO policyDocDTO) throws Exception;

    /**
     * 下载文件
     *
     * @param reqPolicyDocDTO 请求参数
     * @throws Exception 异常信息
     */
    void downloadPolicyFile(ReqPolicyDocDTO reqPolicyDocDTO) throws Exception;
}
